/* Parallelizers.cpp
 * 
 *  Author          : Alexander J. Yee
 *  Date Created    : 02/19/2017
 *  Last Modified   : 02/19/2017
 * 
 */

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Dependencies
#include "Parallelizers.h"
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include "Parallelizer_NoParallelism.h"
#include "Parallelizer_CppAsync.h"
#ifdef _WIN32
#include "Parallelizer_WindowsThreadPool.h"
#endif
//#ifdef YMP_ENABLE_CILK
//#include "Parallelizer_CilkPlus.h"
//#endif
namespace ymp{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
BasicFrameworks::NoParallelism      framework_none;
BasicFrameworks::CppAsync           framework_cppasync;
#ifdef _WIN32
BasicFrameworks::WindowsThreadPool  framework_winpool;
#endif
//#ifdef YMP_ENABLE_CILK
//BasicFrameworks::CilkPlus           framework_cilk;
//#endif
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Global Instantiations
BasicParallelizer& parallelizer_none        = framework_none;
BasicParallelizer& parallelizer_cppasync    = framework_cppasync;
#ifdef _WIN32
BasicParallelizer& parallelizer_winpool     = framework_winpool;
#endif
//#ifdef YMP_ENABLE_CILK
//BasicParallelizer& parallelizer_cilk        = framework_cilk;
//#endif
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Default Framework
#if 0
//#elif defined YMP_ENABLE_CILK
//BasicParallelizer& parallelizer_default     = framework_cilk;
#elif defined _WIN32
BasicParallelizer& parallelizer_default     = framework_winpool;
#else
BasicParallelizer& parallelizer_default     = framework_cppasync;
#endif
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
